
using System;
using Abp.Application.Services;
using Abp.Application.Services.Dto;

using System.Collections.Generic;
using System.Threading.Tasks;
using WebApp.Navigations.Dtos;
using WebApp.Navigations;



namespace WebApp.Navigations
{
    /// <summary>
    /// 应用层服务的接口方法
    ///</summary>
    public interface IUiMenuAppService : IApplicationService
    {
        /// <summary>
		/// 获取的分页列表集合
		///</summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<UiMenuListDto>> GetPaged(GetUiMenusInput input);


		/// <summary>
		/// 通过指定id获取ListDto信息
		/// </summary>
		Task<UiMenuListDto> GetById(EntityDto<Guid> input);


        /// <summary>
        /// 返回实体的EditDto
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<GetUiMenuForEditOutput> GetForEdit(NullableIdDto<Guid> input);


        /// <summary>
        /// 添加或者修改的公共方法
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task CreateOrUpdate(CreateOrUpdateUiMenuInput input);

        /// <summary>
        /// 添加或者修改的公共方法
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<UiMenuEditDto> Create(UiMenuEditDto input);

        /// <summary>
        /// 添加或者修改的公共方法
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task Update(UiMenuEditDto input);


        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task Delete(EntityDto<Guid> input);

		
        /// <summary>
        /// 批量删除
        /// </summary>
        Task BatchDelete(List<Guid> input);



        //// custom codes
        Task<PermissionTreeDto> GetPermissionTree(Guid? pid = null, bool IsUserId = false, bool needbtn = false);
        /// <summary>
        /// 获取tree 数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<UiMenuTreeDto>> GetPagedTree(GetUiMenusInput input);


                            //// custom codes end
    }
}
